Merge branch 'master' of http://git.xfoto.com.cn/CarePatch/thermometer

FFIB vor 3 Jahren
Ursprung
Commit
07f5edb6c2

+ 23 - 0
account/migrations/0004_auto_20210816_2148.py

@@ -0,0 +1,23 @@
1
+# Generated by Django 3.2.6 on 2021-08-16 13:48
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('account', '0003_auto_20210816_1054'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AlterField(
14
+            model_name='administratorinfo',
15
+            name='status',
16
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
17
+        ),
18
+        migrations.AlterField(
19
+            model_name='userinfo',
20
+            name='status',
21
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
22
+        ),
23
+    ]

+ 28 - 18
api/eqpt_views.py

@@ -90,13 +90,13 @@ def eqpt_onoff(request):
90 90
 
91 91
     if active == 0:
92 92
         try:
93
-            user = IsolationPointUserInfo.objects.get(pk=eqpt.ipui_pk)
93
+            ipui = IsolationPointUserInfo.objects.get(pk=eqpt.ipui_pk)
94 94
         except IsolationPointUserInfo.DoesNotExist:
95
-            user = None
96
-        if user:
97
-            user.leave_at = tc.utc_datetime()
98
-            user.status = False
99
-            user.save()
95
+            ipui = None
96
+        if ipui:
97
+            ipui.leave_at = tc.utc_datetime()
98
+            ipui.status = False
99
+            ipui.save()
100 100
 
101 101
     return response()
102 102
 
@@ -116,12 +116,12 @@ def eqpt_remark(request):
116 116
 
117 117
     # 存放历史备注记录
118 118
     try:
119
-        user = IsolationPointUserInfo.objects.get(pk=eqpt.ipui_pk)
119
+        ipui = IsolationPointUserInfo.objects.get(pk=eqpt.ipui_pk)
120 120
     except IsolationPointUserInfo.DoesNotExist:
121
-        user = None
122
-    if user:
123
-        user.remark += [remark]
124
-        user.save()
121
+        ipui = None
122
+    if ipui:
123
+        ipui.remark += [remark]
124
+        ipui.save()
125 125
 
126 126
     return response()
127 127
 
@@ -176,8 +176,8 @@ def eqpt_result(request):
176 176
     ).values('macid', 'temperature')
177 177
     logs = {log.get('macid'): log.get('temperature') for log in logs}
178 178
 
179
-    infos = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True).values('pk', 'fields')
180
-    infos = {info.get('pk'): info.get('fields') for info in infos}
179
+    ipuis = IsolationPointUserInfo.objects.filter(point_id=point_id, status=True).values('pk', 'fields')
180
+    ipuis = {info.get('pk'): info.get('fields') for info in ipuis}
181 181
 
182 182
     total_active_eqpt_num = eqpts.count()
183 183
     has_upload_temperature_num = len(logs)
@@ -189,7 +189,7 @@ def eqpt_result(request):
189 189
     eqpts = [{**eqpt.data, **{
190 190
         'has_upload': eqpt.macid in logs,
191 191
         'temperature': logs.get(eqpt.macid, 0),
192
-        'fields': infos.get(eqpt.ipui_pk, {}),
192
+        'fields': ipuis.get(eqpt.ipui_pk, {}),
193 193
     }} for eqpt in eqpts]
194 194
 
195 195
     return response(data={
@@ -221,8 +221,8 @@ def get_screen_data(point=None, point_id=None):
221 221
     ).values('macid', 'temperature')
222 222
     logs = {log.get('macid'): log.get('temperature') or get_old_temperature(point.point_id, log.get('macid')) for log in logs}
223 223
 
224
-    infos = IsolationPointUserInfo.objects.filter(point_id=point.point_id, status=True).values('pk', 'fields')
225
-    infos = {info.get('pk'): info.get('fields') for info in infos}
224
+    ipuis = IsolationPointUserInfo.objects.filter(point_id=point.point_id, status=True).values('pk', 'fields', 'observed_days')
225
+    ipuis = {info.get('pk'): {'fields': info.get('fields'), 'observed_days': info.get('observed_days')} for info in ipuis}
226 226
 
227 227
     total_active_eqpt_num = eqpts.count()
228 228
     has_upload_temperature_num = len(logs)
@@ -231,7 +231,8 @@ def get_screen_data(point=None, point_id=None):
231 231
     eqpts = [{**eqpt.screen_data, **{
232 232
         'has_upload': eqpt.macid in logs,
233 233
         'temperature': logs.get(eqpt.macid, 0),
234
-    }, **{field.get('key', ''): field.get('value', '') for field in infos.get(eqpt.ipui_pk, {})}} for eqpt in eqpts]
234
+        'observed_days': ipuis.get(eqpt.ipui_pk, {}).get('observed_days', 0),
235
+    }, **{field.get('key', ''): field.get('value', '') for field in ipuis.get(eqpt.ipui_pk, {}).get('fields', {})}} for eqpt in eqpts]
235 236
     reminds = [{
236 237
         'name': eqpt.get('name'),
237 238
         'room': eqpt.get('room'),
@@ -257,7 +258,7 @@ def get_screen_data(point=None, point_id=None):
257 258
         'temperature': eqpt.get('temperature', ''),
258 259
         'status': '已上报' if eqpt.get('temperature') else '未上报',
259 260
         'last_report_time': eqpt.get('last_submit_at', ''),
260
-        'observed_days': 1,
261
+        'observed_days': eqpt.get('observed_days', 0),
261 262
     } for eqpt in eqpts]
262 263
 
263 264
     return {
@@ -405,4 +406,13 @@ def mqtt_upload_temperature(payload):
405 406
 
406 407
             set_old_temperature(eqpt.point_id, macid, temperature)
407 408
 
409
+        try:
410
+            ipui = IsolationPointUserInfo.objects.get(pk=eqpt.ipui_pk)
411
+        except IsolationPointUserInfo.DoesNotExist:
412
+            ipui = None
413
+        if ipui:
414
+            ipui.observed_ymds = list(set(ipui.observed_ymds + [point_measure_ymd]))
415
+            ipui.observed_days = len(ipui.observed_ymds)
416
+            ipui.save()
417
+
408 418
     set_screen_info(point.point_id, get_screen_data(point))

+ 1 - 1
equipment/admin.py

@@ -16,7 +16,7 @@ class IsolationPointInfoAdmin(admin.ModelAdmin):
16 16
 
17 17
 
18 18
 class IsolationPointUserInfoAdmin(admin.ModelAdmin):
19
-    list_display = ('point_id', 'user_id', 'fields', 'status', 'updated_at', 'created_at')
19
+    list_display = ('point_id', 'user_id', 'fields', 'observed_days', 'leave_at', 'status', 'updated_at', 'created_at')
20 20
 
21 21
 
22 22
 class ThermometerEquipmentInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):

+ 48 - 0
equipment/migrations/0010_auto_20210816_2148.py

@@ -0,0 +1,48 @@
1
+# Generated by Django 3.2.6 on 2021-08-16 13:48
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('equipment', '0009_auto_20210816_1054'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='isolationpointuserinfo',
15
+            name='observed_days',
16
+            field=models.IntegerField(default=0, help_text='已测温天数', verbose_name='observed_days'),
17
+        ),
18
+        migrations.AlterField(
19
+            model_name='isolationpointfieldpoolinfo',
20
+            name='status',
21
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
22
+        ),
23
+        migrations.AlterField(
24
+            model_name='isolationpointinfo',
25
+            name='status',
26
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
27
+        ),
28
+        migrations.AlterField(
29
+            model_name='isolationpointuserinfo',
30
+            name='status',
31
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
32
+        ),
33
+        migrations.AlterField(
34
+            model_name='thermometerequipmentinfo',
35
+            name='status',
36
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
37
+        ),
38
+        migrations.AlterField(
39
+            model_name='thermometermeasureinfo',
40
+            name='status',
41
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
42
+        ),
43
+        migrations.AlterField(
44
+            model_name='thermometermeasureloginfo',
45
+            name='status',
46
+            field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),
47
+        ),
48
+    ]

+ 19 - 0
equipment/migrations/0011_isolationpointuserinfo_observed_ymds.py

@@ -0,0 +1,19 @@
1
+# Generated by Django 3.2.6 on 2021-08-16 13:57
2
+
3
+from django.db import migrations
4
+import jsonfield.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('equipment', '0010_auto_20210816_2148'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='isolationpointuserinfo',
16
+            name='observed_ymds',
17
+            field=jsonfield.fields.JSONField(blank=True, default=[], help_text='已测温日期', null=True, verbose_name='observed_ymds'),
18
+        ),
19
+    ]

+ 5 - 3
equipment/models.py

@@ -142,7 +142,9 @@ class IsolationPointUserInfo(BaseModelMixin):
142 142
 
143 143
     fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
144 144
 
145
-    leave_at = models.DateTimeField(_('leave_at'), blank=True, null=True, help_text=_('离开时间'))
145
+    observed_ymds = JSONField(_('observed_ymds'), default=[], blank=True, null=True, help_text='已测温日期')
146
+    observed_days = models.IntegerField(_('observed_days'), default=0, help_text='已测温天数')
147
+    leave_at = models.DateTimeField(_('leave_at'), blank=True, null=True, help_text='离开时间')
146 148
 
147 149
     remark = JSONField(_('remark'), default=[], blank=True, null=True, help_text='备注')
148 150
 
@@ -191,7 +193,7 @@ class ThermometerEquipmentInfo(BaseModelMixin):
191 193
     sn = models.CharField(_('sn'), max_length=32, blank=True, null=True, help_text='序列号')
192 194
 
193 195
     active_status = models.IntegerField(_('active_status'), choices=ACTIVE_STATUE_TUPLE, default=OFFLINE, help_text='激活状态')
194
-    active_at = models.DateTimeField(_('active_at'), blank=True, null=True, help_text=_('激活时间'))
196
+    active_at = models.DateTimeField(_('active_at'), blank=True, null=True, help_text='激活时间')
195 197
 
196 198
     # 用户基本信息
197 199
     ipui_pk = models.IntegerField(_('ipui_pk'), default=0, help_text='隔离点用户录入PK')
@@ -204,7 +206,7 @@ class ThermometerEquipmentInfo(BaseModelMixin):
204 206
 
205 207
     remark = models.CharField(_('remark'), max_length=255, blank=True, null=True, help_text='备注')
206 208
 
207
-    last_submit_at = models.DateTimeField(_('last_submit_at'), blank=True, null=True, help_text=_('上一次上报时间'))
209
+    last_submit_at = models.DateTimeField(_('last_submit_at'), blank=True, null=True, help_text='上一次上报时间')
208 210
 
209 211
     eqpt_register_status = models.IntegerField(_('eqpt_register_status'), choices=REGISTER_STATUE_TUPLE, default=FAIL, help_text='设备注册状态')
210 212
     eqpt_register_result = models.TextField(_('eqpt_register_result'), blank=True, null=True, help_text='设备注册结果')

+ 3 - 3
thermometer/basemodels.py

@@ -5,9 +5,9 @@ from django.utils.translation import ugettext_lazy as _
5 5
 
6 6
 
7 7
 class BaseModelMixin(models.Model):
8
-    status = models.BooleanField(_('status'), default=True, help_text=_('状态'), db_index=True)
9
-    created_at = models.DateTimeField(_('created_at'), auto_now_add=True, editable=True, help_text=_('创建时间'))
10
-    updated_at = models.DateTimeField(_('updated_at'), auto_now=True, editable=True, help_text=_('更新时间'))
8
+    status = models.BooleanField(_('status'), default=True, help_text='状态', db_index=True)
9
+    created_at = models.DateTimeField(_('created_at'), auto_now_add=True, editable=True, help_text='创建时间')
10
+    updated_at = models.DateTimeField(_('updated_at'), auto_now=True, editable=True, help_text='更新时间')
11 11
 
12 12
     class Meta:
13 13
         abstract = True